#define  _CRT_SECURE_NO_WARNINGS 1
//#include"head.h"

/*
1.回调函数是什么?
回调函数就是一个通过函数指针调用的函数。
如果你把函数的指针(地址)作为参数传递给另一个函数，当这个指针被用来调用其所指向的函数时，被调用的函数就是回调函数。
回调函数不是由该函数的实现方直接调用，而是在特定的事件或条件发生时由另外的一方调用的，用于对该事件或条件进行响应。
*/

//示例：
// 
//void menu()
//{
//    printf("----------计算器----------\n");
//    printf("-------1.add   2.sub------\n");
//    printf("-------3.mul   4.div------\n");
//    printf("-----------0.exit---------\n");
//    printf("--------------------------\n");
//    printf("请选择：");
//}
//
//int Add(int a, int b)
//{
//    return a + b;
//}
//
// int Sub(int a, int b)
//{
//    return a - b;
//}
//
//int Mul(int a, int b)
//{
//    return a * b;
//}
//
//int Div(int a, int b)
//{
//    return a / b;
//}
//
//void calc(int(*pf)(int, int))
//{
//    int x = 0;
//    int y = 0;
//    int r = 0;
//    printf("请输入两个操作数：");
//    scanf("%d%d", &x, &y);
//    r = pf(x, y);
//    printf("%d\n", r);
//}
//
//int main()
//{
//    int choice = 0;
//
//    do
//    {
//        menu();
//        scanf("%d", &choice);
//        switch (choice)
//        {
//        case 1:
//            calc(Add);
//            break;
//        case 2:
//            calc(Sub);
//            break;
//        case 3:
//            calc(Mul);
//            break;
//        case 4:
//            calc(Div);
//            break;
//        case 0:
//            printf("退出程序\n");
//            break; 
//        default:
//            printf("输入错误\n");
//            break;
//        }
//
//    }while (choice);
//
//    return 0;
//}


//冒泡排序 --> 缺陷：只能排序整型
//void BubbleSort(int a[], int n)
//{
//    int i = 0;
//    int j = 0;
//    int temp = 0;
//    int flag = 0;
//    for (i = 0; i < n - 1; i++)
//    {
//        flag = 0;//假设已经有序
//        for (j = 0; j < n - 1 - i; j++)
//        {
//            if (a[j] > a[j + 1])
//            {
//                temp = a[j];
//                a[j] = a[j + 1];
//                a[j + 1] = temp;
//                flag = 1;
//            }
//        }
//        if (!flag)
//        {
//            break;
//        }
//    }
//}
//
//void PrintArray(int a[], int n)
//{
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        printf("%d ", a[i]);
//    }
//    printf("\n");
//}
//
//int main()
//{
//    int arr[] = { 5,4,3,2,1,6,7,8,9 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//
//    PrintArray(arr, sz);
//    BubbleSort(arr, sz);
//    PrintArray(arr, sz);
//
//    return 0;
//}